package com.mashibing.dp.singleton;

/**
 * 静态内部类方式：完美的写法之一
 * JVM保证单例
 * 加载外部类时不会加载内部类，这样可以实现懒加载
 */
public class Mgr07 {

    private Mgr07() {
    }

    // 静态内部类，只有这个类能访问
    // 外面的类加载时，里面的类不会被加载的
    private static class Mgr07Holder {
        private final static Mgr07 INSTANCE = new Mgr07();
    }
    // 调用时，加载内部类Mgr07Holder，JVM保证线程安全，因为每个类只能被加载一次
    public static Mgr07 getInstance() {
        return Mgr07Holder.INSTANCE;// 只会执行一次
    }

    public void m() {
        System.out.println("m");
    }

    public static void main(String[] args) {
        for(int i=0; i<100; i++) {
            new Thread(()->{
                System.out.println(Mgr07.getInstance().hashCode());
            }).start();
        }
    }


}
